分类
联系方式
  1. 新浪微博
  2. E-mail

Blog Bug 002:文章页面点击图片展示报错

问题描述

在文章页中点击图片,想在新 Tab 中打开图片,结果打开失败。

新 tab 中给出的 URL https://maxieewong.com/File:Sma5_15.jpg.html 与实际不符。

分析

查看对应的捕获 HTML 2861.html,关于图片的描述如下:

<figure-inline typeof="mw:Image">
    <a href="./File:Sma5_15.jpg.html">
        <img data-file-height="1333" data-file-type="bitmap" data-file-width="2560" height="469" src="/img/Sma5_15.jpg" width="900">
    </a>
</figure-inline>

原因是我只处理了 img 标签,没有处理外部的标签。

Bug1 生成器遗留问题

在 Bug 1 修复中,修复了抓取页面的 HTML,但是没有重新 output。

因此在单篇文章重新生成时,需要再 output 一下。修复。

解决方法

完善图片处理代码。

从 img 标签,向外找到 a 标签,修改其 href。

同时,也把 img 标签内的无用属性清理一下。修复。

Rust kuchiki 中如何获取父节点?

通过 ChatGPT 快速获取答案:

在 Rust 的 Kuchiki 库中,可以使用 parent_element 方法来获取某个节点的父节点。例如,假设你有一个名为 node 的节点,你可以这样获取它的父节点:

use kuchiki::NodeRef;

let parent = node.parent_element().unwrap();

注意,parent_element 方法返回一个 Option 类型的值,因为节点可能没有父节点。如果 node 有父节点,则返回 Some 值,否则返回 None。因此,上面的代码使用了 unwrap 方法来忽略 None 值并返回父节点。 如果你想要在节点没有父节点时执行特定的操作,可以使用 if let 语句来检查返回值是否为 Some。例如:

use kuchiki::NodeRef;

if let Some(parent) = node.parent_element() {
    println!("The parent of node is {:?}", parent);
} else {
    println!("Node does not have a parent");
}

总结

总体收获:

  1. 问题解决
  2. 单篇文章生成完善
  3. 学会 Rust kuchiki 中如何获取父节点?
  4. ChatGPT 对 Rust 语言也很擅长